package com.example.demo.designPhilosophy.lodl;

import java.util.ArrayList;
import java.util.List;

/**
* @description: TODO 学校总部 管理类 （违反迪米特原则实例）
* @author yangzhenyu
* @date 2022/2/18 18:51
* @version 1.0
*/
public class SchoolManager {
    public List<SchoolEmployee> getList(){
        //SchoolEmployee  作为SchoolManager的方法的返回值类型，所以它们是直接的朋友关系
        ArrayList<SchoolEmployee> schoolEmployee = new ArrayList<>();
        for (int i =0;i<3;i++){
            schoolEmployee.add(new SchoolEmployee("学校总部员工 id:"+i));
        }
        return schoolEmployee;
    }

    //CollegeManager 作为SchoolManager的方法参数类型 ，所以它们是直接的朋友关系
    public void print(CollegeManager manager){
        //打印总部员工
        this.getList().forEach(v->{
            System.out.println(v.getId());
        });
        System.out.println("===================================");
        // 打印学院员工
        //CollegeEmployee 作为SchoolManager的方法内部出现 ，所以它们不是直接的朋友关系，
        // 不符合迪米特原则的第二个规范，只与直接的朋友进行通信，避免非直接朋友的耦合关系
        List<CollegeEmployee> collegeEmployees = manager.getList();
        collegeEmployees.forEach(v->{
            System.out.println(v.getId());
        });
    }
}
